package com.stefanini.pe.bbva.mbl.ws;

import javax.sql.DataSource;

import org.apache.log4j.Logger;
import org.springframework.jdbc.core.JdbcTemplate;

import com.stefanini.pe.bbva.mbl.carga.in.to.MultiTablaKey;
import com.stefanini.pe.bbva.mbl.in.*;
import com.stefanini.pe.bbva.mbl.in.bo.MultiTablaBOImpl;
import com.stefanini.pe.bbva.mbl.in.bo.iface.MultiTablaBO;
import com.stefanini.pe.bbva.mbl.in.carga.common.CorporativaHelper;
import com.stefanini.pe.bbva.mbl.in.dao.MultiTablaDAOImpl;
import com.stefanini.pe.bbva.mbl.in.dao.iface.MultiTablaDAO;
import com.stefanini.pe.bbva.mbl.in.listeners.PasaContratosDaemonBean;

import pe.com.grupobbva.saa.lei0.CtBodyRq;
import pe.com.grupobbva.saa.lei0.CtHeader;
import pe.com.grupobbva.saa.lei0.CtValidarUsuarioRq;
import pe.com.grupobbva.saa.lei0.CtValidarUsuarioRs;
import pe.com.grupobbva.saa.lei0.SAA_LEI0_PortType;
import pe.com.grupobbva.saa.lei0.SAA_LEI0_ServiceLocator;

public class ConsultaWS {

	private final static boolean IN_PRODUCCION = true;
	private static Logger logger = Logger.getLogger(ConsultaWS.class);
	
	private static DataSource dataSource;
	
	public DataSource getDataSource() {
		return dataSource;
	}

	public void setDataSource(DataSource dataSource) {
		this.dataSource = dataSource;
	}
	
	public static void main(String... arg) {
		try {
			CtValidarUsuarioRs c = login("P017073", "1234", "LE");
			System.out.println(c.getHeader().getDescripcion());
		} catch (Exception e) {
			e.printStackTrace();
		}

	}

	public static CtValidarUsuarioRs login(String codUsuario, String password,
			String codAplicacion) throws Exception {
		logger.info("CtValidarUsuarioRs - Ingresro al metodo");
		JdbcTemplate jTemplate = new JdbcTemplate(dataSource);
		//MultiTablaDAOImpl oMultiTablaDAO = new MultiTablaDAOImpl();
		//MultiTablaBOImpl oMultitablaBO = new MultiTablaBOImpl(oMultiTablaDAO);
		//MultiTablaKey key = new MultiTablaKey("109","01");
		//String desc_Valor = oMultitablaBO.selectByPrimaryKey(key).getDescValor();
		String desc_Valor = CorporativaHelper.obtenerDatoCorporativa(jTemplate, "DATO1", "T02", "7");;
		logger.info("CtValidarUsuarioRs - Valor traido de KEY 109 01 ".concat(desc_Valor));
		SAA_LEI0_ServiceLocator lei0 = new SAA_LEI0_ServiceLocator(desc_Valor);
		SAA_LEI0_PortType s = lei0.getSAA_LEI0_Port();

		CtHeader header = new CtHeader();
		if (IN_PRODUCCION) {
			header.setUsuario(codUsuario);
		} else {
			//header.setUsuario("P017073");
		}
		CtBodyRq data = new CtBodyRq();
		data.setCodigoApp(codAplicacion);
		data.setPassword(password);
		data.setUsuario(codUsuario);
		
		CtValidarUsuarioRq req = new CtValidarUsuarioRq();
		req.setData(data);
		req.setHeader(header);
		return s.callLEI0(req);
	}
}
